package demo06

/**
 * @author xiaoZhao
 * @date 2022/7/19
 * @describe 高级函数 Map 操作
 */
object Test14_HighLevelFunction_Map {
  def main(args: Array[String]): Unit = {
    val list = List(12, 23, 78, 65, 34)

    // 过滤  选取偶数
    println(list.filter((elem: Int) => elem % 2 == 0))
    // 简化
    println(list.filter(_ % 2 == 0))

    // 狭义上的Map操作，把每一个元素做一个转化得到新的集合，相当于集合的映射关系
    // 每个元素✖️2
    list.map(elem => elem * 2)

    // 扁平化
    val newList = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
    println(newList.flatten)

    // 扁平映射
    // 将一组字符串进行分词，并保存成单词的列表
    val strings = List("hello world", "hello scala", "hello java")
    // 分词
    val splitList = strings.map(string => string.split(" "))
    // 打散 扁平化
    println(splitList.flatten)

    println(strings.flatMap(_.split(" ")))

    // 分组 groupBy
    // 分成奇偶两组
    println(list.groupBy(_ % 2))
    println(list.groupBy(data => if (data % 2 == 0) "偶数" else "奇数"))

    val wordList = List("asd", "cdffd", "bfrf", "ascd")
    println(wordList.groupBy(_.charAt(0)))

  }
}
